home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 22 / CU Amiga Magazine's Super CD-ROM 22 (1998)(EMAP Images)(GB)[!][issue 1998-05].iso / PowerPC / Programming / PPCsiod / SIOD / Debug.scm < prev    next >
Text File  |  1993-09-24  |  2KB  |  47 lines

  1. (define (break proc . nome)
  2.         (let ((code (procedure-code proc)))
  3.              (set-cdr! code (list 'begin 
  4.                                   (list 'bkpt (if (string? (car nome))
  5.                                                            (car nome)))
  6.                                   (cdr code)))
  7.              (set-procedure-code! proc code)))
  8.  
  9. (define (unbreak proc)
  10.         (let ((code (procedure-code proc)))
  11.              (if (eq? (caaddr code) 'bkpt)
  12.                  (set-cdr! code (cadddr code))
  13.                  (error "procedure is not breaked"))
  14.              (set-procedure-code! proc code)))
  15.  
  16. (define (*tracer* nome env)
  17.         (if (string? nome) 
  18.             (display nome)
  19.             (display "entering procedure with parameters:"))
  20.         (do ((ar (environment-bindings env) (cdr ar))) 
  21.             ((null? ar)) 
  22.             (print (cdar ar))
  23.             (newline)))
  24.  
  25. (define (trace proc . nome)
  26.         (let ((code (procedure-code proc)))
  27.              (set-cdr! code 
  28.                        (list 'begin 
  29.                              (list '*tracer* (if (string? (car nome)) 
  30.                                                  (car nome))   
  31.                                              (list 'the-environment))
  32.                              (cdr code)))
  33.              (set-procedure-code! proc code)))
  34.  
  35. (define (untrace proc)
  36.         (let ((code (procedure-code proc)))
  37.              (if (eq? (caaddr code) '*tracer*)
  38.                  (set-cdr! code (cadddr code))
  39.                  (error "procedure is not traced"))
  40.              (set-procedure-code! proc code)))
  41.  
  42. (macro assert (lambda (x)
  43.                       `(if ,(cadr x)
  44.                            #t
  45.                            (bkpt ,@(cddr x)))))
  46.  
  47.